
/**
 * 
 * 日志采集系统
 * 
 * 题目描述

日志采集是运维系统的的核心组件。日志是按行生成，每行记做一条，由采集系统分批上报。

如果上报太频繁，会对服务端造成压力;
如果上报太晚，会降低用户的体验；
如果一次上报的条数太多，会导致超时失败。
为此，项目组设计了如下的上报策略：

每成功上报一条日志，奖励1分
每条日志每延迟上报1秒，扣1分
积累日志达到100条，必须立即上报
给出日志序列，根据该规则，计算首次上报能获得的最多积分数。

输入描述
按时序产生的日志条数 T1,T2…Tn，其中

1 ≤ n ≤ 1000
0 ≤ Ti ≤ 100
输出描述
首次上报最多能获得的积分数

用例
输入	
1 98 1
输出	98
说明	T1 时刻上报得 1 分
T2 时刻上报得98分，最大
T3 时刻上报得 0 分
输入	50 60 1
输出	50
说明	如果第1个时刻上报，获得积分50。如果第2个时刻上报，最多上报100条，前50条延迟上报1s，每条扣除1分，共获得积分为 100-50=50
输入	3 7 40 10 60
输出	37
说明	
T1时刻上报得3分
T2时刻上报得7分
T3时刻上报得37分，最大
T4时刻上报得-3分
T5时刻上报，因为已经超了100条限制，所以只能上报100条，得-23分
 * 
 */

import java.util.Arrays;
import java.util.Scanner;

/**
 * 
 * 题目解析
用例1意思是：

如果在T1时刻上报日志，由于只有1条日志，因此可得1分。

如果在T2时刻上报日志，由于T1时刻产生的1条日志延迟了1秒上报，因此要扣1分，到了T2时刻可以上报1+98条日志，可得99分，因此99-1=98分。

如果在T3时刻上报日志，则T1日志延迟了2s，要扣1*2分，T2日志延迟了1s，要扣98*1分，T3时刻可以上报100条日志，可得100分，因此100-2-98=0分。
用动态规划DP解决

将每个时刻，可得的正向分计算出来缓存进dp数组中。所谓正向分，比如T2时刻积累了99条日志，那么就应该得到99分。这是正向得分。但是最终得分还需要扣除延迟上报的负向得分。比如T2时刻上报日志的话，则T1时刻产生的每条日志都需要扣除1分，这是负向得分。因此T2时刻的最终得分是：正向得分  - 负向得分 = 99 - 1 = 98分。

每个时刻都有两种选择，上报、不上报。如果某时刻选择不上报，则会正向得分、负向得分不会清零，即会累加给下一个时刻，如果某时刻选择上报了，则对应的正向得分和负向得分都会清零。

需要注意的是，当日志累计到100条或以上时，则必须要上报，这意味着会产生一次得分清零。

 */

public class 日志采集系统 {
    
    public static void main(String[] args) {
        
        try{

            Scanner scanner = new Scanner(System.in);

            int[] logArr = Arrays.stream(scanner.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();

            //上报日志得分
            int[] scoreArr = new int[logArr.length];
            scoreArr[0] = logArr[0];

            //不上报日志扣分
            int[] loseScoreArr = new int[logArr.length];

            //记录上报时的分数
            int uploadScore = scoreArr[0] - loseScoreArr[0];

            for(int i=1; i<logArr.length; i++){

                //最多 100 条，第 i 次提交的得分 第 i-1 次得分 + 第 i 次得分 的累加 ，最大 100
                scoreArr[i] = Math.min(100, scoreArr[i-1]+logArr[i]);

                //扣分
                //第 i次扣分 == 第 i-1 次扣分 并且加上 scoreArr[i-1]次未提交产生的扣分
                loseScoreArr[i] = loseScoreArr[i-1] + scoreArr[i-1];

                //计算得分
                uploadScore = Math.max(uploadScore, scoreArr[i] - loseScoreArr[i]);

                if(scoreArr[i] >= 100) break;
            }


            System.out.println(uploadScore);

        }catch(Exception e){

            e.printStackTrace();
        }
    }
}
